package com.shujia.youhua

import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SparkSession

/**
 * coalesce主要适用于减小分区的时候使用,且不会产生shuffle
 *
 * 常用的场景:合并小文件
 */
object CoalesceDemo2 {
  def main(args: Array[String]): Unit = {
    val ss: SparkSession = SparkSession.builder()
      .master("local")
      .appName("缓存，避免使用重复的RDD")
      .getOrCreate()
    val sc: SparkContext = ss.sparkContext

    val lineRDD: RDD[String] = sc.textFile("spark/data/stus/*")
    println(s"===========lineRDD的分区数为：${lineRDD.getNumPartitions}==================")


    val rdd1: RDD[String] = lineRDD.coalesce(1)
    println(s"===========rdd1的分区数为：${rdd1.getNumPartitions}==================")
    val rdd2: RDD[String] = rdd1.sortBy(_.split(",")(0).toLong)
    println(s"===========rdd2的分区数为：${rdd2.getNumPartitions}==================")
    rdd2.foreach(println)

  }
}
